﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using DataLayer.dbml;
using System.Xml.Linq;
using System.Data.Linq.SqlClient;


namespace DataLayer.Controller
{
    /// <summary>
    /// Clase responsable del manejo de los clientes
    /// </summary>
    public class ClientController : GenericController<PSE_CREDITO, DataClassesDataContext>
    {
        /// <summary>
        /// Estado de cuenta Cliente
        /// </summary>
        /// <param name="nit"></param>
        /// <returns></returns>
        public static List<PSE_CREDITO> GetPSECredito(string nit)
        {
            return (from r in DataContext.PSE_CREDITO
                    where r.NIT_CEDULA == nit && r.SALDO_FACTURA > 0
                    select r).ToList<PSE_CREDITO>();
        }

        /// <summary>
        /// Historial de pagos del cliente
        /// </summary>
        /// <param name="nit"></param>
        /// <returns></returns>
        public static IQueryable GetHistory(string nit)
        {
            return (from p in DataContext.PSE_CREDITO
                    join d in DataContext.DOC_SOP on p.NUMERO_FACTURA equals d.NUMERO_FACTURA
                    where p.NIT_CEDULA == nit && p.SALDO_FACTURA <= 0
                    orderby d.NUMERO_DOCUMENTO
                    select new { numero_factura = p.NUMERO_FACTURA, fecha_factura = p.FECHA_FACTURA, valor_factura = p.VALOR_TOTAL_FACTURA, tipo_documento = d.TIPO_DOCUMENTO, numero_documento = d.NUMERO_DOCUMENTO, fecha_documento = d.FECHA_PAGO, valor_documento = d.VALOR_DOCUMENTO, fecha_pago = d.FECHA_FACTURA });
        }
    }
}
